An operating system can divide system memory of a computing device into two distinct regions: kernel space and user space. Kernel space is typically a protected range of memory locations in which a kernel (e.g., one or more core processes of the operating system) executes. User space is a range of memory locations in which user processes execute. A process is an executing instance of a program. User processes cannot access kernel memory directly because kernel memory is protected.
One of the roles of the kernel is to manage various resources of the computing device. Resources can include, but are not limited to, processor cycles (e.g., Central Processing Unit or CPU cycles), memory, and access to input/output (I/O) devices. To modify the ways the kernel manages the resources, an application programmer can modify the kernel by making changes to the kernel source code.